<p id="f-100-updates-md"></p>
<h1>Go 101 更新历史</h1>

<h3>v1.21.a (2023/三月/18)</h3>

<ul>
<li>Go 1.22引入了<code>for range Integer</code>循环变种并改变了for循环的语义。相关的章节做了修改：

<ul>
<li><a href="https://go101.org/article/control-flows.html#for-semantic-change">基本流程控制语法</a></li>
<li><a href="https://go101.org/article/control-flows-more.html#argument-evaluation-moment">协程、延迟函数调用、以及恐慌和恢复</a></li>
<li><a href="https://go101.org/article/container.html#iteration">数组、切片和映射</a></li>
</ul></li>
</ul>

<h3>v1.21.a (2023/十月/11)</h3>

<ul>
<li>Go 1.21<a href="https://go101.org/article/container.html#clear">添加了一个<code>clear</code>内置函数</a>。</li>
<li>从Go 1.21开始，<a href="https://go101.org/article/panic-and-recover-use-cases.html#avoid-verbose">调用<code>panic(nil)</code>将产生一个运行时刻的非nil新恐慌</a>。</li>
</ul>

<h3>v1.20.a (2023/二月/01)</h3>

<ul>
<li>Go 1.20<a href="https://gfw.go101.org/article/container.html#slice-to-array">开始支持切片类型转换到数组</a>.</li>
<li>Go 1.20<a href="https://gfw.go101.org/article/unsafe.html">在&quot;unsafe&quot;标准库包中加入了三个函数</a>：<code>SliceData</code>、<code>String</code>和<code>StringData</code>.</li>
<li>从Go 1.20开始，<code>math/rand</code>标准库包中的全局随机数产生器将被自动设置随机种子。</li>
<li>在 <a href="https://gfw.go101.org/article/bounds-check-elimination.html">边界检查消除</a> 一章中提及 <code>-gcflags=&quot;-d=ssa/check_bce&quot;</code> 不会报告一些泛型函数中的边界检查。</li>
</ul>

<h3>v1.19.a (2022/八月/29)</h3>

<ul>
<li>Go 1.19<a href="https://gfw.go101.org/article/concurrent-atomic-operation.html">加入了一些原子操作类型s</a>.</li>
<li>Go 1.19<a href="https://gfw.go101.org/article/memory-model.html#atomic">更新内存顺序保证</a>.</li>
</ul>

<h3>v1.18.a (2022/四月/06)</h3>

<ul>
<li>Go 1.18开始支持自定义泛型。一些文章随之修改了一些。主要包括先面的文章：

<ul>
<li><a href="https://gfw.go101.org/article/interface.html">接口</a>；</li>
<li><a href="https://gfw.go101.org/article/type-system-overview.html">Go类型系统概述</a>（注意“具名类型”这个术语被重新加回来了）。</li>
</ul></li>
</ul>

<h3>v1.17.b (2021/九月/10)</h3>

<ul>
<li>改进隐式方法值的估值规则解释。具体请请阅读<a href="https://gfw.go101.org/article/method.html#method-value-Normalization">此节</a>和<a href="https://gfw.go101.org/article/type-embedding.html#method-value-evaluation">此节</a>。</li>
</ul>

<h3>1.16.b (2021/五月/18)</h3>

<ul>
<li>增加Go 1.17内容。</li>
</ul>

<h3>1.16.a (2021/二月/18)</h3>

<ul>
<li>支持Go 1.16中新增的资源内嵌功能。</li>
</ul>

<h3>1.15.b (2020/九月/28)</h3>

<ul>
<li>对<a href="https://gfw.go101.org/article/details.html#reflect-deep-equal">reflect.DeepEqual</a>相关细节增加了一些描述。</li>
<li>添加了<a href="https://gfw.go101.org/article/exceptions.html#code-block-following-else">一个语法例外</a>.</li>
</ul>

<h3>1.15.a (2020/八月/07)</h3>

<ul>
<li>指出从Go官方工具链1.15开始，使用make+copy总是比使用append来克隆切片更快。</li>
</ul>

<h3>1.14.g (2020/六月/12)</h3>

<ul>
<li>删除了1.14.e中增加的一个细节：比较同时含有可比较和不可比较字段的结构体值或者同时含有可比较和不可比较字段的数组值的行为是未定义的。原因是<a href="https://github.com/golang/go/issues/8606">此行为将被明确下来</a>。</li>
<li>加了<a href="https://gfw.go101.org/article/details.html#impossible-to-interface-assertion">一个细节</a>：关于在编译时刻即可确定总是失败的目标类型为接口类型的断言。</li>
</ul>

<h3>1.14.f (2020/六月/02)</h3>

<ul>
<li>所用的&quot;Go SDK&quot;用词都替换成了&quot;Go官方工具链&quot;。</li>
</ul>

<h3>1.14.e (2020/五月/06)</h3>

<ul>
<li>加了<a href="https://gfw.go101.org/article/details.html#compare-values-with-both-comparable-and-incomparable-parts">一个细节</a>：比较同时含有可比较和不可比较字段的结构体值或者同时含有可比较和不可比较字段的数组值的行为是未定义的。</li>
<li>加了<a href="https://gfw.go101.org/article/details.html#blank-fields-are-ignored-in-comparisons">一个细节</a>：在结构体值的比较中，名为空标识符的字段将被忽略。</li>
</ul>

<h3>1.14.d (2020/四月/25)</h3>

<ul>
<li><code>runtime.KeepAlive</code>相关的内容被从<a href="https://gfw.go101.org/article/unsafe.html">非类型安全指针</a>一文中删除了。
我很抱歉之前在此文中传播了错误的信息。</li>
</ul>

<h3>1.13.i (2019/十月/31)</h3>

<ul>
<li>改正了“数组、切片和映射”一文中对<a href="https://gfw.go101.org/article/container.html#delete-slice-elements">删除一段切片元素</a>一节中的错误代码。</li>
<li>更正了<a href="https://gfw.go101.org/article/function.html#function-evaluation-time">延迟调用的函数值的估值时刻</a>一节中的解释。</li>
<li>&quot;在正确的位置调用内置<code>recover</code>函数&quot;一文<a href="https://gfw.go101.org/article/panic-and-recover-more.html">改名</a>为“详解panic/recover原理”。这篇文章几乎被整个重写了。</li>
</ul>

<h3>1.13.h (2019/十月/18)</h3>

<ul>
<li>修正了“表达式估值顺序规则”一文中对<a href="https://gfw.go101.org/article/evaluation-orders.html#value-assignment">赋值语句中的表达式估值和赋值执行顺序</a>的欠妥解释。</li>
<li>添加了<a href="https://gfw.go101.org/article/101.html#compiler-optimizations">两条总结</a>。</li>
</ul>

<h3>1.13.e (2019/十月/07)</h3>

<ul>
<li>我决定撤回1.13.d中的勘误。（重新在1.14.d中加入）</li>
</ul>

<h3>1.13.d (2019/九月/30)</h3>

<ul>
<li>在“非类型安全指针”一文中添加了<a href="https://gfw.go101.org/article/unsafe.html#fact-value-address-might-change">一个事实</a>并指出此文犯了一个<a href="https://gfw.go101.org/article/unsafe.html#pattern-convert-to-uintptr-and-back">严重错误</a>。</li>
</ul>

<h3>1.13.c (2019/九月/25)</h3>

<ul>
<li>删除了《在正确的位置调用内置recover函数》一文中犯了低级错误的一节。</li>
</ul>

<h3>1.13.b (2019/九月/19)</h3>

<ul>
<li>删除了不准确的描述：一个变量的地址永不改变。</li>
</ul>

<h3>1.13.a (2019/九月/05)</h3>

<ul>
<li>Go 1.13就绪</li>
<li><a href="https://gfw.go101.org/article/channel-closing.html">如何优雅地关闭通道</a>一文中添加了两种情形。</li>
<li><a href="https://gfw.go101.org/article/type-system-overview.html#unnamed-type">“有名类型”和“无名类型”术语</a>重新加了回来，但是它们现在等同于“定义类型”和“非定义类型”。</li>
<li>“数据通道”被更名为“通道”。</li>
</ul>

<h3>1.12.d (2019/四月/18)</h3>

<ul>
<li>丰富了<a href="https://gfw.go101.org/article/evaluation-orders.html#package-level-variables">包级变量初始化顺序</a>一节。</li>
</ul>

<h3>1.12.c (2019/四月/09)</h3>

<ul>
<li>删除了“有名类型”和“无名类型”术语。</li>
</ul>

<h3>1.12.b (2019/四月/06)</h3>

<ul>
<li>添加了<a href="https://gfw.go101.org/article/evaluation-orders.html#package-level-variables">包级变量初始化顺序</a>一节。</li>
</ul>
